knitr::opts_chunk$set(echo = FALSE)
library(tidyverse)

Überblick {.build}

1. Motivation 1. Item Response Theorie 1. IRT-Modelle in R 1. Inferenzstatistik 1. Satz von Bayes 1. Bayes'sche Statistik-Pakete in R 1. IRT und GLM 1. Bayes'sche IRT in R
**Was ich voraussetze:**
- R & RStudio - Pipeoperator `%>%` - Item Response Theorie
**Was** - Methodik: Bayes'sche IRT-Modellierung - R-Package-Premiere: birtms **Was nich** - Funktionsweise unterschiedlicher MCMC-Algorithmen - Vielfalt verfügbarer Prior - fachdidaktische Erkenntnisse

Motivation

- Professionswissens von Chemie-Studierenden mit Lehramtsoption - deklarativ-fachdidaktischer Wissenstest
Itemstamm 059MC
- Ursprünglich: Intervention im Bereich Lernvideos - ergänzend zum prozedural-konditionalen Test aus dem ProwiN-Projekt - Interesse, Motivation, Persönlichkeit, $\dots$

Motivation

- Professionswissens von Chemie-Studierenden mit Lehramtsoption - deklarativ-fachdidaktischer Wissenstest
Antwortoptionen 059MC
Grafik aus @Zhang.2011
- real Multiple-Choice- und Sortier-Aufgaben
einzeln auswerten - Auswertungsmethoden: - Alles-oder-nichts - Partial-Credit / Ordinal - jede Antwortoption / jeden Paarvergleich einzeln - Bifaktor-Struktur / Testlet-Modell

Motivation

- Professionswissens von Chemie-Studierenden mit Lehramtsoption - deklarativ-fachdidaktischer Wissenstest - Bayes'sches MIRT-Modell ab 100 Personen [@Fujimoto.2020]
Biasreduzierender Effekt informativer Priors; Grafik aus @Fujimoto.2020
- Prior-Einfluss verschwindet ab 500 Beobachtungen

Motivation

- Professionswissens von Chemie-Studierenden mit Lehramtsoption - deklarativ-fachdidaktischer Wissenstest - Bayes'sches MIRT-Modell ab 100 Personen [@Fujimoto.2020] - Bayes'sche IRT Modellierung mit brms [@Burkner.23.05.2019]
Posterior Predictive Model Check (**PPMC**); Grafik aus @Burkner.2020
- deutlich: loglik-Kriterium für Item 1 und 4 (5, 6, 9, 10, 12) nicht reproduziert durch geschätzte Schwierigkeit allein

Motivation

Shiny-App für den direkten Modellvergleich

- 1pl bis 3pl - mit und ohne Testlets - nur für die eigenen Modelle - Shiny-App für allgemeine Modelle mit **birtms** das Ziel

Motivation

- Professionswissens von Chemie-Studierenden mit Lehramtsoption - deklarativ-fachdidaktischer Wissenstest - Bayes'sches MIRT-Modell ab 100 Personen [@Fujimoto.2020] - Bayes'sche IRT Modellierung mit brms [@Burkner.23.05.2019] - Marginal Likelihood für Modellvergleiche [@Merkle.2019]
Informationskriterien unter Nutzung der conditional und marginal likelihood; Grafik aus @Merkle.2019
- Vergleich von 5 Modellen mit unterschiedlich vielen Freiheitsgraden - conditional loglik - Schätzfehler größer - IC Wert generell geringer (gaukelt guten fit vor) - komplexere Modelle passen tendenziell besser - marginal loglik: Entscheidung für Model 2

Item Response Theorie {.build}

- latente Variablen - Personenfähigkeiten $\theta_k$ - Itemparameter $\beta_i, \alpha_i, \dots$ - logistisches Modell (GLM) - lokale Unabhängigkeit
**Raschmodell:**
$$P\left(1|\theta_k, \beta_i\right)=\frac{\exp\left(\theta_k + \beta_i\right)}{1+\exp\left(\theta_k + \beta_i\right)}$$
Grafik aus @Grottke.2021
*Ausnahmen:*
- latente Regression - Testlets

IRT-Modelle in R

Packeges - TAM, mirt - eRm, lme4 - flirt [@Jeon.2016]

# data_spm <- rio::import("../data/data_spm.rda")
# mod1PL <- TAM::tam.mml(resp=data_spm)

Inferenzstatistik

x <- c(F, rep(T, 8))
p <- round(sum(x)/length(x), 2)
se <- sqrt(p*(1-p)/length(x))
p_lci <- max(0, p-1.96*se) %>% round(2)
p_uci <- min(1, p+1.96*se) %>% round(2)
p_val <- (pbinom(1, 9, .5)+1-pbinom(8, 9, .5)) %>% round(3)
Münzwurf: `r as.numeric(x)`
$X \sim binom(n, p)$
data <- tibble::tribble(
  ~"Aspekt", ~"Klassisch / Frequentistisch", ~"Bayes'sch / Bayesianisch",
  "Wahrscheinlichkeit", "relative Häufigkeit", "Grad persönlicher Überzeugung",
  "Vorannahme", "Münze fair", "Münze fair (SD = .10)",
)

knitr::kable(data)
Neben der gemeinsamen Datenbasis haben wir uns für ein gemeinsames Modell entschieden. Wir glauben, die Daten basieren auf einem Prozess, der mit der Binomialverteilung modelliert werden kann.

Inferenzstatistik

Münzwurf: `r as.numeric(x)`
$X \sim binom(n, p)$
data <- tibble::tribble(
  ~"Aspekt", ~"Klassisch / Frequentistisch", ~"Bayes'sch / Bayesianisch",
  "Wahrscheinlichkeit", "relative Häufigkeit", "Grad persönlicher Überzeugung",
  "Vorannahme", "Münze fair", "Münze fair (SD = .10)",
  "P(X=1) =", paste0(p, " [", p_lci, ", ", p_uci, "]"), "",
  "Hypothesentest", as.character(p_val), "",
  "Entscheidung", "nicht fair", ""
)

knitr::kable(data)

Inferenzstatistik

Münzwurf: `r as.numeric(x)`
$X \sim binom(n, p)$
data <- tibble::tribble(
  ~"Aspekt", ~"Klassisch / Frequentistisch", ~"Bayes'sch / Bayesianisch",
  "Wahrscheinlichkeit", "relative Häufigkeit", "Grad persönlicher Überzeugung",
  "Vorannahme", "Münze fair", "Münze fair (SD = .10)",
  "P(X=1) =", paste0(p, " [", p_lci, ", ", p_uci, "]"), "",
  "Hypothesentest", as.character(p_val), "",
  "Entscheidung", "nicht fair", ""
)

knitr::kable(data)
Grafik erstellt mit @JASP2020

Inferenzstatistik

Münzwurf: `r as.numeric(x)`
$X \sim binom(n, p)$
data <- tibble::tribble(
  ~"Aspekt", ~"Klassisch / Frequentistisch", ~"Bayes'sch / Bayesianisch",
  "Wahrscheinlichkeit", "relative Häufigkeit", "Grad persönlicher Überzeugung",
  "Vorannahme", "Münze fair", "Münze fair (SD = .29)",
  "P(X=1) =", paste0(p, " [", p_lci, ", ", p_uci, "]"), "",
  "Hypothesentest", as.character(p_val), "",
  "Entscheidung", "nicht fair", ""
)

knitr::kable(data)
Grafik erstellt mit @JASP2020
- Gefühle in der Wissenschaft? - Subjektivität = Willkür? - Wald-CI geschätzt (und nach oben beschnitten) vs. simulierte CIs

Inferenzstatistik

Modell: $X \sim binom(n, p)$ Beendigung der Datenerhebung nach: 1. 9 Würfen 1. *8 mal Kopf* 1. 1 Minute **p-value**: Die Wahrscheinlichkeit in einer Stichprobe der hypothetischen Population ein Ergebnis zu erhalten, dass mindestens so extrem wie das vorliegende Ergebnis ist, *wobei die beabsichtigten Erhebungs- und Auswertungsmethoden berücksichtigt werden müssen*.
Grafik aus @Kruschke.2015
- Intuitive Interpretation: nur in p % der Fälle kommt dieses Ergebnis zu stande - Uneindeutigkeit im frequentistischen oft unberücksichtigt - unterschiedliche p-values für einen Datensatz - Datenerhebung: - Einzelperson: Power- oder Speedtest? - Beantwortet Frage mit bestimmter Wahrscheinlichkeit - Summenscore als Binomialverteilung (konstante Schwierigkeiten) oder Summe von Bernoulli-Versuchen (verallg. Binomialverteilt) - Wie viele Fragen bearbeitet er? - Was das Kriterium für die Stichprobe - Anzahl und Art zusätzlicher Tests verändert Imagionary Sample Space weiter - 8 mal Kopf erzeugt Bias - Adaptives Testen: will keine neuen Daten erzeugen, sondern bewerten

Inferenzstatistik {.smaller}

Grafik nach @Kruschke.2015


zweite Münze 24 mal werfen: $p\left(\frac{z_1}{N_1}\right) = 0.063$
zweite Münze 12 mal werfen: $p\left(\frac{z_1}{N_1}\right) = 0.103$
- Zweite Münze muss nicht mal geworfen werden!

Inferenzstatistik {.build}

- sind Nägel fair? - 7 von 24 stehen - verwerfen die Hypothese nicht!
- Vorwissen berücksichtigen - Berücksichtigung seltener Ereignisse - bedeutsame Parametervergleiche - Datensätze erweitern - Einfluss des Priors nimmt mit Datenmenge ab
- schwache Prior führen quasi zu frequentistischen Ergebnissen - Einfluss des Priors kann überprüft werden

Inferenzstatistik

- Ablehnen der Nullhypothese spricht nicht für Alternativhypothese - Bayes-Faktor: pro H0, ungewiss, pro H1 - Informationsverlust - behindert Metaaanalysen - Parameterwerte und CIs statt NHST? - Effektstärke - CI enthält Werte, die von NHST nicht abgelehnt würden - frequentistische CIs auch vom Sample Space abhängig
Grafik aus @Kruschke.2018
Grafik aus @Kruschke.2018
- NHST verkürzt unsere Informationen auf Ja/Nein - CI: Konfidenzintervall basiert auf Vorannahmen und Schätzungen - Interpretation: bei vielen Wiederholungen wird der wahre Parameter in 95 % der Fälle im CI liegen - keine Informationen über Parameterverteilung - Unimodalität - Schiefe

Inferenzstatistik

### Mehls Paradox ROPE
Grafik aus @Waning.2001

Inferenzstatistik

Grafik aus @Waning.2001

### Frequentistisch - Problematisch für kleine Stichproben - brauchen unterschiedliche Tests für unterschiedliche Szenarien
### Bayes'sch - Prior können normal Gestalthaben, aber auch non-normale Daten fitten

Inferenzstatistik Backlog

### Klassisch - Parameter haben einen festen Wert, den wir schätzen wollen - ein CI sagt nicht, dass der Wert einer Verteilung unterliegt, sondern nur, in welchem Beeich der wahre Wert liegen sollte - $\alpha$-Fehler Korrektur - in höchstens $\alpha \, %$ der Wiederholungen ist überhaupt ein Parameter außerhalb der CI
### Bayes'sch - CI: Kredibilitätsintervall Ergebnis von Simulation - Parameterverteilung zeigt, die wahrscheinlichten Werte an - Breite $\sim$ Unsicherheit - HDI statt equallt tailed CI - Median oder Modalwert statt Mittelwert - Passendes zentrales Maß anhand der Parameterverteilung wählbar - Bimodale und schiefe Verteilungen identifizierbar - Hardware - braucht mehr Rechenzyklen - braucht mehr Arbeitsspeicher (oder noch mehr Zeit) - braucht mehr Festplattenspeicher - können Unsicherheit in Folgeanalysen mitberücksichtigen - prädiktive Modelle - Messunsicherheit berücksichtigen - fehlende Werte imputieren - nutzen wir die Möglichkeit der Priors in den IRT-Modellen schon? - likelihood / Posterior unabhängig von Testanzahl - poweranalysis by simulation - PPMC mit oder ohne p-value?

Satz von Bayes {.build}

$$ P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)}$$
Angewendet auf Modelle: $$ P(Parameter|Daten) = \frac{P(Daten|Parameter) \cdot P(Parameter)}{P(Daten)}$$
Gesprochen: $$ \mathbf{Posterior\:Wahrs.} = \frac{\mathbf{Modellfunktion} \cdot \mathbf{Prior\:Wahrs.}}{\mathbf{Normierungsfaktor}}$$
- Statt Parametern kann man auch von Hypothesen sprechen: ist $\beta_i = 0$? - Modellfunktion = Likelihood - Normierungsfaktor: marginale Wahrscheinlichkeit

Bayes'sche Statistik-Pakete in R

### Modelle fitten - Stan: - *rstan* - *rstanarm* - **brms** - JAGS: *rjags* - *rethinking* - *BayesFactor* - *blavaan*
### Modelle auswerten - *tidybayes* - *loo* - *bayestestR* - *coda*, *plotMCMC* - *bridgesampling*
- Stan oder JAGS brauchen compiler-Zeit - kleine Modelle besser direkt simulieren - Stan: Hameltonian Monte Carlo sampling - *rstan*: Stan syntax - *rstanarm*: Gelman et al. (früher *arm* genutzt) - **brms**: bayesian GLMs - JAGS: *rjags*: Gibbs sampling; JAGS/WinBUGS syntax - *rethinking*: McElreath - *BayesFactor*: Hypothesis checking - *blavaan*: SEMs in Stan (neu) oder JAGS
- *tidybayes*: plots and long data extraction - *loo*: Modellvergleiche mit leave-one-out CV - *bayestestR*: model checking and evaluation - *coda*, *plotMCMC*: MCMC-chain plots - *bridgesampling*: Bayes factor for whole models

IRT und GLM

Hypothesentests und Modellvergleiche

- Hypothesen-Modell-Beziehung N:M - Modell verwerfen $\nLeftrightarrow$ Hypothese verwerfen $$\begin{align} y &\sim item + person + fw \\ y &\sim item + person + fw^2 \\ y &\sim item + person + fw*rpk \end{align}$$ $fw$: Fachwissen
$rpk$: Repräsentationskenntnis
Grafik aus @McElreath.2020
- Fachwissenseinfluss kann vielei Gestalt haben - Moderationsbeziehung mathematisch uneindeutig - Parameterbetrachtung selbst in suboptimalen Modellen

Modellvergleiche

<

- Bridge Sampling: 110000 statt 2000

Bayes'sche IRT

  1. Daten vorbereiten
  2. Modell formulieren
  3. Konvergenz der MCMC-Chains prüfen ($\hat{r}$, plots)
  4. Posterior Predictive Model Checking
### Modellvergleiche - Dimensionalitätsanalysen - Prädiktorenwahl - Wirkungsmodelle prüfen (DAGs)
### Parameterinspektion - Itemselektion - DIF - Effektstärken - $\dots$

Bayes'sche IRT in R

### EM Algorithmus - bis zur Konvergenz: - Wähle SD der random effect Verteilung - Wähle random effect Werte - maximiere die Likelihood
(analytisch oder per Newton-Verfahren) - Präsentiere beste Punktschätzer - Präsentiere Schätze CI
### MCMC Algorithmus - Burn-in / warmup-Pahse - Sampling-Phase - Präsentiere Postsamples - Deskriptive Statistik der Postsamples Schritte: - Wähle Parameter in der Imgebung - berechne Likelihood - besser: akzeptiere Werte - schlechter: werfe biased Münze - Kopf: akzeptiere Werte - Zahl: verwerfe Werte, wähle neue
- MCMC Sampling:

Bayes'sche IRT in R

### Modelle spezifizieren - Stan syntax: - *rstan* - *edstan* - GLM syntax: - *brms* - Keyword based - **birtms**
### Modelle auswerten mit birtms - marginal loglikelihood Modellvergleiche - bayes'sche Variante des $R^2$-Bestimmtheitsmaß - Item Characteristic Curves - Odds Ratio Heatmaps - Itemparameterverteilungen darstellen - Posterior Predictive Model Checks - Persone Response Functions - Wrightmap

birtms

Ausblick {.smaller}

### Funktionalitäten - **testlets** - **Shiny-App** - *3pl* - Itemkriterien [vgl. @Scharl.2019] - hierarchic - ordinal - multidim - multivariate - 4pl - noncompensatory
### Paket - Dokumentation - Vignetten - Videotutorials - Performance - Vereinheitlichung - Abhängigkeiten reduzieren - Mehrsprachigkeit
- Dokumentation: - Kapitel im GDCP-Psychometriebuch - multivariat: - SEM / latente Variablen - Hoffnung: brms 3 Funktionalitäten

Zusammenfassung

Slide with R Output

summary(cars)

Slide with Plot

plot(pressure)


Famondir/birtms documentation built on Feb. 18, 2022, 2:51 a.m.